﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Thread = System.Threading.Tasks;
using Microsoft.Practices.Unity;
using Infrastucture;
using TimeSplicerModule.Factories;
using TimeSplicerModule.DomainModels;
using TimeSplicerModule.Security;
using TimeSplicerModule.ViewModels;
using TimeSplicerModule.Services;

namespace TimeSplicerModule.Services
{

    public partial class TaskService : ITaskService
    {
        private readonly IUnityContainer _container;
        private ISession _session;
        private readonly IUserService _userService;
        private readonly IProjectService _projectService;
        private readonly ITimestampService _timestampService;
        private readonly ITaskFactory _taskFactory;
        private readonly IPriorityFactory _priorityFactory;
        private readonly ICategoryService _categoryService;
        private readonly ICategoryFactory _categoryFactory;
        private readonly IStatusFactory _statusFactory;
        private readonly IProjectUserFactory _projectUserFactory;
        private readonly IUserFactory _userFactory;
        private readonly IProjectRoleFactory _projectRoleFactory;
        private readonly ITaskScheduleFactory _scheduleFactory;
        private readonly ITaskScheduleService _scheduleService;

        public TaskService(IUnityContainer container, IUserService userService, IProjectService projectService, ITimestampService timestampService, ITaskFactory taskFactory,
            IPriorityFactory priorityFactory, ICategoryService categoryService, ICategoryFactory categoryFactory, IStatusFactory statusFactory, IProjectUserFactory projectUserFactory,
            IUserFactory userFactory, IProjectRoleFactory projectRoleFactory, ITaskScheduleFactory scheduleFactory,
            ITaskScheduleService scheduleService)
        {
            _container = container;
            _userService = userService;
            _projectService = projectService;
            _timestampService = timestampService;
            _taskFactory = taskFactory;
            _priorityFactory = priorityFactory;
            _categoryService = categoryService;
            _categoryFactory = categoryFactory;
            _statusFactory = statusFactory;
            _projectUserFactory = projectUserFactory;
            _userFactory = userFactory;
            _projectRoleFactory = projectRoleFactory;
            _scheduleFactory = scheduleFactory;
            _scheduleService = scheduleService;
        }




        // create helper that sets up form view defaults
    }
}
